package cn.daomeng.firebird.mq.rabbit;


import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;

/**
 * 消息鉴定定义接口
 * @author qsl
 * @date 2019.05.13
 */
public interface RabbitMessageListener {

	int ACK_MODE_AUTO = 0;

	int ACK_MODE_MANUAL = 1;

	int ACK_MODE_NONE = 2;

	int DEFAULT_RECEIVE_NUM = 1;


	/**
	 * @return 监听queue名称
	 */
	String getTargetQueueName();

	/**
	 * 业务处理方法
	 */
	void handleMessage(Object messageData);


	/**
	 * 业务处理方法,需要手动ACK的
	 */
	void handleMessage(Object messageData , Message message , Channel channel);

	/**
	 * ACK接口
	 * @author Qin.Siliang
	 * @since 2019/3/11
	 * @param
	 * @return int
	 * @throws
	 */
	int getAcknowledgeMode();


	/**
	 * 查询使用线程的个数
	 * @return
	 */
	int getConcurrent();
}
